package com.example.song.mywebviewclient;

import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.view.ViewGroup;
import android.webkit.WebResourceRequest;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.Toast;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class MainActivity extends AppCompatActivity {

    private WebView mWebview;
    public static Context context;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        context = this;
        initView();
        String assetDir = "myjs";
        //是否升级
        if (shouldGetFromAssets()) {
            CopyAssetsToSd mCopyAssetsToSd = new CopyAssetsToSd(this, assetDir, getDir());

            mCopyAssetsToSd.setOnCopyListener(new CopyAssetsToSd.onCopyListener() {
                @Override
                public void success() {
                    //文件copy 成功
                    mWebview.loadUrl("http://www.");

                }
            });
        } else {
            //TODO 已有文件或者从服务器获取文件
            //升级 删除旧文件
            DeleteFileUtil.delete(getDir());
            //TODO 获取新文件 写入
            mWebview.loadUrl("http://www.");
        }

        //声明WebSettings子类
        WebSettings webSettings = mWebview.getSettings();
//如果访问的页面中要与Javascript交互，则webview必须设置支持Javascript
        webSettings.setJavaScriptEnabled(true);
// 若加载的 html 里有JS 在执行动画等操作，会造成资源浪费（CPU、电量）
// 在 onStop 和 onResume 里分别把 setJavaScriptEnabled() 给设置成 false 和 true 即可
//设置自适应屏幕，两者合用
        webSettings.setUseWideViewPort(true); //将图片调整到适合webview的大小
        webSettings.setLoadWithOverviewMode(true); // 缩放至屏幕的大小
//缩放操作
        webSettings.setSupportZoom(true); //支持缩放，默认为true。是下面那个的前提。
        webSettings.setBuiltInZoomControls(true); //设置内置的缩放控件。若为false，则该WebView不可缩放
        webSettings.setDisplayZoomControls(false); //隐藏原生的缩放控件

//其他细节操作
        webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //关闭webview中缓存
        webSettings.setAllowFileAccess(true); //设置可以访问文件
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口
        webSettings.setLoadsImagesAutomatically(true); //支持自动加载图片
        webSettings.setDefaultTextEncodingName("utf-8");//设置编码格式
        mWebview.setWebViewClient(new MyWebViewClient() {
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
            }
        });

    }

    /**
     * 是否从assets获取文件
     */
    private boolean shouldGetFromAssets() {
        return 1 == 1 ? true : false;
    }

    private void initView() {
        mWebview = (WebView) findViewById(R.id.webview);
    }

    @Override
    protected void onDestroy() {
        if (mWebview != null) {
            mWebview.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
            mWebview.clearHistory();
            mWebview.destroy();
            mWebview = null;
        }
        super.onDestroy();
    }

    /**
     * 文件夹路径
     */
    public static String getDir() {
        String mDownDir;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            mDownDir = context.getFilesDir().toString();
        } else {
            mDownDir = Environment.getExternalStorageDirectory().toString();
        }
        return mDownDir + "/mdhttest";
    }


}
